<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>任务列表</title>
	<link rel="stylesheet" href="${request.contextPath}/plugins/bootstrap/css/bootstrap.css">
	<link rel="stylesheet" href="${request.contextPath}/plugins/font-awesome/css/font-awesome.min.css"/>
	<link rel="stylesheet" href="${request.contextPath}/plugins/select2/select2.min.css">
	<link rel="stylesheet" href="${request.contextPath}/plugins/jquery-confirm/jquery-confirm.min.css">
	<link rel="stylesheet" href="${request.contextPath}/plugins/bootstrap-table/bootstrap-table.min.css">
	<link rel="stylesheet" href="${request.contextPath}/hadmin/css/animate.css">
	<link rel="stylesheet" href="${request.contextPath}/hadmin/css/style.css">
	<link rel="stylesheet" href="${request.contextPath}/hadmin/css/common.css">
</head>
<body class="gray-bg">
  <div class="wrapper wrapper-content animated fadeInRight">
    <div class="row">
		<div class="col-xs-12">
			<div class="ibox">
				<div class="ibox-content">
					<form class="form-inline m-b-xs">
						<div class="form-group">
							<#if permissions?seq_contains('job:sysjob:save')>
								<a class="btn btn-sm btn-info" href="${request.contextPath}/job/sysjob/add"><i class="fa fa-plus"></i> 创建任务</a>
							</#if>
							<#if permissions?seq_contains('job:sysjob:remove')>
								<a class="btn btn-sm btn-danger" href="javascript:deleteBatchJob();"><i class="fa fa-remove"></i> 批量删除</a>
							</#if>
						</div>
						<div class="form-group">
							<input type="text" id="search" name="search" placeholder="输入任务名称搜索" class="form-control">
							<input type="text" id="dateRange" name="dateRange" class="form-control item-datetime-range" placeholder="请选择开始日期  ~ 请选择结束日期" style="width: 300px; margin: 0 5px;">
							<button id="btn_query"  class="btn btn-sm btn-sm btn-info" type="button"><i class="fa fa-search"></i> 搜索</button>
							<button id="btn_reset" class="btn btn-sm btn-sm btn-danger" type="button"><i class="fa fa-refresh"></i> 重置</button>
							<a class="btn btn-sm btn-success" href="${request.contextPath}/job/sysjob/listJobLog"><i class="fa fa-share"></i> 任务日志</a>
						</div>
					</form>
					<div class="table-responsive">
						<table id="table" class="table table-striped table-bordered table-hover"></table>
					</div>
				</div>
			</div>
		</div>
    </div>
  </div>
  <!-- 通用js引入 -->
  <script src="${request.contextPath}/plugins/jQuery/jQuery-2.1.4.min.js"></script>
  <script src="${request.contextPath}/plugins/bootstrap/js/bootstrap.min.js"></script>
  <script src="${request.contextPath}/plugins/select2/select2.full.min.js"></script>
  <script src="${request.contextPath}/plugins/layer/layer.min.js"></script>
  <script src="${request.contextPath}/plugins/laydate/laydate.js"></script>
  <script src="${request.contextPath}/plugins/jquery-confirm/jquery-confirm.min.js"></script>
  <script src="${request.contextPath}/plugins/validate/jquery.validate.min.js"></script>
  <script src="${request.contextPath}/plugins/validate/messages_zh.min.js"></script>
  <script src="${request.contextPath}/plugins/bootstrap-table/bootstrap-table.min.js"></script>
  <script src="${request.contextPath}/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
  <script src="${request.contextPath}/hadmin/js/content.js"></script>
  <script src="${request.contextPath}/hadmin/js/common.js?v=0.9"></script>
	<script>
  	// 权限控制
  	var editFlag = '${permissions?seq_contains("job:sysjob:edit")}';
  	var deleteFlag = '${permissions?seq_contains("job:sysjob:remove")}';

  	// 表格配置设置
    $("#table").bootstrapTable({
			url: '${request.contextPath}/job/sysjob/page', // 请求后台的URL（*）
			contentType: "application/x-www-form-urlencoded",// 用post请求，这个是必须条件，必须加上，get可以不用，亲测
			dataType: "json",
			method: "POST",// 请求方式（*）
			// toolbar: '#toolbar', // 工具按钮用哪个容器
			undefinedText: "-", // 为undefined时显示的字
			striped: false, // 是否显示行间隔色
			cache: false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
			pagination: true, // 是否显示分页（*）
			sortable: false, // 是否启用排序
			sortOrder: "asc", // 排序方式
			sortName: "", // 排序名称
			toolbar: '', // 指定工作栏
			loadingFontSize: 13, // 自定义加载文本的字体大小
			// search: true, // 是否使用客户端搜索
			queryParams: queryInitParams,// 传递参数（*）
			responseHandler: responseHandler,
			queryParamsType: "limit",
			sidePagination: "server", // 分页方式：client客户端分页，server服务端分页（*）
			pageNumber: 1, // 初始化加载第一页，默认第一页
			pageSize: 10, // 每页的记录行数（*）
			pageList: [10, 20, 50, 999], // 可供选择的每页的行数（*）
			showColumns: false, // 是否显示所有的列
			showRefresh: false, // 是否显示刷新按钮
			minimumCountColumns: 2, // 最少允许的列数
			clickToSelect: true, // 是否启用点击选中行
			strictSearch: true,
			// height: 460, // 行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
			showToggle: false, // 是否显示详细视图和列表视图的切换按钮
			uniqueId: "id", // 每一行的唯一标识，一般为主键列
			cardView: false, // 是否显示详细视图
			detailView: false, // 是否显示父子表
			showExport: false, // 是否显示导出
			exportDataType: 'basic', // 'basic', 'all', 'selected'.
			escape: true, // html转义
			// align: "center",
			columns: [
				{checkbox: true },
				{
					field: 'jobName',
					title: '任务名称',
					align : "center"
				},
				{
					field: 'jobGroup',
					title: '任务分组',
					align : "center"
				},
				{
					field: 'cronExpression',
					title: '执行表达式',
					align : "center"
				},
				{
					field: 'status',
					title: '任务状态',
					align : "center",
					formatter : function(value, row, index) {
						if (row.status == 1) {
							return '<i class="fa fa-toggle-off text-info fa-2x" onclick="start(\''+ row.jobId + '\', \''+ row.jobGroup +'\')"></i>';
						} else {
							return '<i class="fa fa-toggle-on text-info fa-2x" onclick="stop(\''+ row.jobId + '\', \'' + row.jobGroup +'\')"></i>';
						}
					}
				},
				{
					field: 'createTime',
					title: '创建时间',
					align: "center"
				},
				{
					field: 'updateTime',
					title: '更新时间',
					align: "center"
				},
				{
					field : 'operation',
					title : '操作',
					align : "center",
					formatter : function(value, row, index) {
						var actions = [];
						if (editFlag=='true') {
							actions.push('<a class="btn btn-info btn-xs" href="javascript:;" onclick="runTask(\''+ row.jobId + '\',\'' + row.jobGroup+ '\')"><i class="fa fa-play-circle-o"></i> 执行</a> ');
						}
						if (editFlag=='true') {
							actions.push('<a class="btn btn-primary btn-xs" href="${request.contextPath}/job/sysjob/edit/'+ row.jobId +'"><i class="fa fa-pencil-square-o"></i> 编辑</a> ')
						}
						if (deleteFlag=='true') {
							actions.push('<a class="btn btn-danger btn-xs" data-trigger="ajax" data-submit-url="${request.contextPath}/job/sysjob/delete/'+ row.jobId +'" data-confirm="您确定要删除该条记录吗?"><i class="fa fa-remove"></i> 删除</a> ');
						}
						return actions.join('');
					}
				}
			],
			onLoadSuccess: tableLoadSuccess, //成功渲染回调
		})

		// 表格查询参数
		function queryInitParams(params) {
			// 这里的键的名字和后端的变量名必须一致
			var temp = {
				limit: params.limit, //页面大小
				offset: params.offset ,//页码
				jobName: $("#search").val(),
				status: $("#status").val(),
				dateRange: $("#dateRange").val(),
			};
			return temp;
		}

		// 表格加载成功事件
		function tableLoadSuccess(data) {
			$(".bs-checkbox").css('vertical-align','middle');
		}

		function responseHandler(data) {
			return data;
		}

		// 搜索
		$("#btn_query").click(function() {
			var params = $("#table").bootstrapTable('getOptions');
			$("#table").bootstrapTable('refresh', params);
		})

		// 重置检索条件
		$("#btn_reset").click(function() {
			$("#search").val("");
			$("#dateRange").val("");
			refreshTable();
		})

		// 运行任务
		function runTask(jobId, jobGroup){
			$.post(
				"${request.contextPath}/job/sysjob/runSysJob",
				{"jobId": jobId, "jobGroup": jobGroup},
				function(data){
					if (data.code == 200) {
						if (data.msg) {
							layer.msg(data.msg, { icon : 1 });
						} else {
							layer.msg('运行成功', { icon : 1 });
						}
					} else {
						layer.msg(data.msg, { icon : 2 });
					}
				}
			);
		}

		// 调度任务-停用
		function stop(jobId, jobGroup) {
			$.confirm({
				type: 'red',
				closeIcon: true,
					title: '警告',
					content: '确认要停用任务吗？',
					buttons: {
						'确认': {
							btnClass: 'btn-blue',
							action: function(){
								$.post(
									"${request.contextPath}/job/sysjob/changeStatus",
									{"jobId": jobId, "jobGroup": jobGroup, "status": 1 },
									function (data) {
										if (data.code == 200) {
											refreshTable();
										}else{
											layer.msg(data.msg, { icon : 2 });
										}
									}
								)
							}
						},
						'取消':{}
					}
			})
		}

		// 调度任务-启用
		function start(jobId, jobGroup) {
			$.confirm({
				type: 'red',
				closeIcon: true,
					title: '警告',
					content: '确认要启动任务吗？',
					buttons: {
						'确认': {
							btnClass: 'btn-blue',
							action: function(){
								$.post(
									"${request.contextPath}/job/sysjob/changeStatus",
									{"jobId": jobId, "jobGroup": jobGroup, "status": 0 },
									function (data) {
										if (data.code == 200) {
											refreshTable();
										}else{
											layer.msg(data.msg, { icon : 2 });
										}
									}
								)
							}
						},
						'取消':{}
					}
			})
		}

		// 删除单个记录
		$("body").delegate("*[data-trigger='ajax']", "click", function() {
			var dataUrl = $(this).attr("data-submit-url");
			var dataConfirm = $(this).attr("data-confirm");
			$.confirm({
				type: 'red',
				closeIcon: true,
				title: '警告',
				content: dataConfirm ? dataConfirm : '确认操作?',
				buttons: {
					'确认': {
						btnClass: 'btn-blue',
						action: function(){
							$.post(dataUrl,{},function(data) {
								if(data.code==200){
									refreshTable();
									layer.msg(data.msg, { icon : 1 });
								}else{
									layer.msg(data.msg, { icon : 2 });
								}
							});
						}
					},
					'取消':{}
				}
			});
		})

		// 批量删除任务
    function deleteBatchJob() {
    	var checkedRows = $("#table").bootstrapTable('getSelections');
			var ids = [];
			$.each(checkedRows, function (i, item) {
				ids.push(item.jobId);
		 	})
			if(ids.length==0) {
				$.alert({
					title: '提示',
					backgroundDismiss:true,
					content: "请选择要删除的记录!",
					buttons:{"好的":{ btnClass: 'btn-blue'}}
				});
			} else {
				$.confirm({
					type: 'red',
					closeIcon: true,
			    title: '警告',
			    content: "确认删除选中的【"+ids.length+"】条记录?",
			    buttons: {
						'确认': {
							btnClass: 'btn-blue',
							action: function() {
								$.post(
									'${request.contextPath}/job/sysjob/batchDelete',
									{id:ids},
									function(data){
										if(data.code==200){
											refreshTable();
											layer.msg(data.msg, { icon : 1 });
										}else{
											layer.msg(data.msg, { icon : 2 });
										}
									}
								);
							}
						},
						'取消':{}
			    }
				});
			}
    }

		// 刷新表格
		function refreshTable() {
			var params = $("#table").bootstrapTable('getOptions');
			$("#table").bootstrapTable('refresh', params);
		}
  	</script>
</body>
</html>
